package com.igrowing.springbootinit.utils;

import io.github.briqt.spark4j.SparkClient;
import io.github.briqt.spark4j.constant.SparkApiVersion;
import io.github.briqt.spark4j.model.SparkMessage;
import io.github.briqt.spark4j.model.SparkSyncChatResponse;
import io.github.briqt.spark4j.model.request.SparkRequest;
import lombok.extern.slf4j.Slf4j;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;

/**
 * Description:    // 类说明
 *
 * @ClassName: AiUtils    // 类名，会自动填充
 * @Author: 周天赐        // 创建者
 * @Email: m18879004515@163.com
 * @Date: 2024/3/29 16:24   // 时间
 * @Version: 1.0     // 版本
 */
@Slf4j
public class AiUtils {

    @Resource
    private static SparkClient sparkClient;
//    private static final String PROMPT ="你是一个数据分析师和前端开发专家，接下来我会按照以下固定格式给你提供内容：\n" +
//            "分析需求：\n" +
//            "[数据分析的需求或者目标}\n" +
//            "原始数据：\n" +
//            "{csv格式的原始数据，用，作为分隔符}\n" +
//            "请根据这两部分内容，按照以下指定格式生成内容（此外不要输出任何多余的开头、结尾、注释）\n" +
//            "【【【【【\n" +
//            "{前端完整Echarts V5的option配置对象js代码（输出文本格式，需要xAxis,yAxis和series三部分部分），合理地将数据进行可视化，不要生成任何多余的内容，比如注释，在代码最前面加上”option=“，在代码最后面加上“;”,且代码不要有AxisIndex部分}\n" +
//            "【【【【【\n" +
//            "{明确的数据分析结论、越详细越好，不要生成多余的注释)\n\n" ;


    public static final String PROMPT = "你是一个数据分析师和前端开发专家，接下来我会按照以下固定格式给你提供内容：\n" +
            "分析需求：\n" +
            "{数据分析的需求或者目标}\n" +
            "原始数据：\n" +
            "{csv格式的原始数据，用,作为分隔符}\n" +
            "请根据这两部分内容，严格按照以下指定格式生成内容（此外不要输出任何多余的开头、结尾、注释）同时不要使用这个符号 '】'\n" +
            "'【【【【【'\n" +
            "{前端 Echarts V5 的 option 配置对象 JSON 代码, 不要生成任何多余的内容，比如注释和代码块标记}\n" +
            "'【【【【【'\n" +
            "{明确的数据分析结论、越详细越好，不要生成多余的注释} \n"
            + "下面是一个具体的例子的模板："
            + "'【【【【【'\n"
            + "{\"xxx\": }"
            + "'【【【【【'\n" +
            "结论：";
    public static String getAiResult(String target)
    {
        String content = PROMPT+target;
        List<SparkMessage> messages = new ArrayList<>();
        messages.add(SparkMessage.userContent (content));
        SparkRequest sparkRequest = SparkRequest.builder()
                .messages(messages)
                .maxTokens(2048)
                .temperature(0.2)
                .apiVersion(SparkApiVersion.V3_5)
                .build();
        SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
        String responseContent =chatResponse.getContent();
        return responseContent;
    }
}

    
    
